package edu.bw.dao;

import edu.bw.dto.SelectDeptByConditionForm;
import edu.bw.dto.UpdateDeptForm;
import edu.bw.pojo.Dept;

import java.util.List;
import java.util.Map;

public interface DeptDao {

    /**
     *
     * @param selectCondition 查询相关的参数
     * @return 查询的数据,每行数据封装一个Map<String, Object> (key代表列名,value代表该列的值),再把所有map存储到List,返回List
     */
    List<Map<String, Object>> selectDeptByCondition(SelectDeptByConditionForm selectCondition);

    /**
     *
     * @param selectCondition 查询相关的参数
     * @return 查询到的总条数
     */
    Long SelectDeptByConditionCount(SelectDeptByConditionForm selectCondition);

    /**
     *
     * @param dept 新添加的部门信息
     * @return 插入的条数
     */
    Integer insert(Dept dept);

    /**
     *
     * @param id
     * @return
     */
    List<Map<String, Object>> selectById(Integer id);

    /**
     *
     * @param updateDeptForm
     * @return
     */
    Integer update(UpdateDeptForm updateDeptForm);

    /**
     *
     * @param ids 要删除的部门id
     * @return 部门下没有元员工返回true,否则返回false
     */
    Boolean selectCanDelete(List<Integer> ids);

    /**
     * 批量删除部门
     * @param ids 根据ids中的id删除对应的部门
     * @return 删除部门的数量
     */
    int deleteDeptByIds(List<Integer> ids);

    List<Map<String, Object>> selectAllDept();
}
